PROOF-OF-WORK (POW) VS PROOF-OF-STAKE (POS)

有在網上搜索過關於礦工的文章的話,肯定見過Proof-of-Work(工作量証明)以及Proof-of-Stake(權益証明),本文以盡量淺白的方式解釋兩種証明方法的理念,用途,分別。

Proof-of-Work(工作量証明)

前文提過,礦工的主要工作是檢查交易,以及生成下一個區塊。為了競爭成為下一個區塊生產者並獲取當中獎勵,不同加密貨幣有不同挑選礦工的方式。例如比特幣挑選礦工的方法是: 最快找出SHA256 hash值比target低的區塊。但其實還有很多其他方法,cryptographic hash function有很多種,可以是SHA512,可以是scrypt,甚至可以是無關hash function,例如最快找到下一個質數。總之挑選的準則是,礦工必須証明自己付出過大量時間或能量去找出區塊。簡單來說是多勞多得,等價交換,只有付出過的人才可以得到獎勵。

設計這個機制時,主要考慮是以防黑客找到挑選礦工方法的漏洞,無需付出即可獲得挖礦獎勵。這一類挑選礦工的方法(或者學術一點: 共識算法,consensus algorithm)稱為Proof-of-Work:工作量証明。

Proof-of-Stake(權益証明)

另一種主流的方法是Proof-of-Stake(權益証明),Ether應該是現今最出名又(將會於2018年秋季)使用PoS方法的加密貨幣。Proof-of-Stake的理念與股票市場相當類似,如果你要左右一間上市公司未來的發展方向,必須要先持有該公司的股票,成為stakeholder後才能在股東大會上發言。而且你佔的股分越多,你越有機會在大會投票時影響結果。

作PoS機制下,要成為下一個區塊的生產者,重點是你必須先持有該加密貨幣,而且持有越多越好。可以想象該加密貨幣就等於股票,持有股票越多就有越大影響力。為了避免持有大量貨幣的人可以壟斷生產區塊的工作,PoS共識算法下還有很多方法使挖礦去中心化。

其中一個簡單方法是計算coin-age(幣齡),例如持有1個coin 100天,你就有100coin-age; 另一個人持有10個coin 2天,則只有20 coin-age,相較之下只持有1個coin的你反而有更大權益(stake),所以你更加機會被挑選成下一個區塊的生產者(又稱validator)。但要留意,每一次生產過後,coin-age會重置到0,亦即是說,持有貨幣的日數是從上一次你成功挖礦開始計算。而且計算日數時亦設有上限,例如你已經持有1個coin 100天,就算你再持有多1天,coin-age也不會再增加,這時為了避免從盤古初開時便持有貨幣的人壟斷。

另一種方法,例如以太幣將於2018年秋季應用的Casper protocol,混合了PoW/PoS,有意成為validator的人拿出部份Ether作按金,然後validator確認礦工挖出來的區塊。如果有validator舉報其他validator沒誠實地確認/確認錯誤的區塊,舉報者會獲得按金的4%作為報酬,而作弊的validator的按金則會被沒收。

當初為甚麼會開發出PoW以外的另一種共識算法?

比特幣挖礦最遭人咎病的一點是浪費電力,不認同加密貨幣的人更認為挖礦是白白勞費地球寶貴資源的行為。而且挖礦本身是資本集中(capital intensive)的經濟活動,本來越持有多資金的資本家越能壟斷,使比特幣挖礦網絡越來越集中。後來需然出現各種PoW 算法試圖解決中心化的問題(例如Litecoin使用memory hard的Scrypt algorithm就是為了避免ASIC出現),但截自目前為止似乎仍未有一種PoW算法能完美避免算力集中的問題。Proof-of-Stake優勝之處在於無需浪費大量能量,而且天然避免了算力集中的問題。

共識算法仍不斷演變,除了主流的PoW,PoS,還有EOS chain應該的DPoS (distributed Proof-of-Stake,分散式權益証明),留待下文解釋。


延伸閱讀